#pragma once
#include "ckobject.h"
#include "zCore.h"

namespace ck
{
	namespace data
	{
		typedef enum ckLandsatSensor
		{
			LS_TM	= 0,
			LS_ETM,
			LS_MSS,
		}ckLandsatSensor;

		typedef enum ckLandsatSatellite
		{
			LS_Satellite_05	= 5,
			LS_Satellite_07 = 7,
			LS_Satellite_08 = 8,
		}ckLandsatSatellite;

		typedef enum ckLandsatProcessingLevel
		{
			LSPL_None = 0,
			LSPL_L1TP,
			LSPL_L1GT,
			LSPL_L1GS,
		}ckLandsatProcessingLevel;

		typedef enum ckLandsatTX
		{
			LS_TX_None  = 0,
			LS_TX_RT,
			LS_TX_T1,
			LS_TX_T2,
		}ckLandsatTX;

		class ZCORE_API LandsatProperty : public ckObject
		{
		public:
			LandsatProperty();
			virtual ~LandsatProperty();
			

		public:
			ckLandsatSensor		GetSensor();
			void				SetSensor(ckLandsatSensor sensor);
			ckLandsatSatellite	GetSatellite();
			void				SetSatellite(ckLandsatSatellite satellite);
			ckLandsatProcessingLevel GetProccessingLevel();
			void		SetProccessingLevel(ckLandsatProcessingLevel level);
			const char*	GetDataTypeAsString();

			z_int32		GetPath();
			void		SetPath(z_int32 path);
			z_int32		GetRow();
			void		SetRow(z_int32 row);
			ck_date_t*	GetAcquistionDate();
			void		SetAcquistionDate(ck_date_t* date);
			ck_date_t*	GetProcessingDate();
			void		SetProcessingDate(ck_date_t* date);
			z_int32		GetCollectionNumbrer();
			void		SetCollectionNumbrer(z_int32 cn);
			ckLandsatTX GetTX();
			void		SetTX(ckLandsatTX tx);
			const char*	GetTXAsString();


		private:
			ckLandsatSensor m_sensor;
			ckLandsatSatellite m_satellite;
			ckLandsatProcessingLevel m_procLevel;
			z_int32		m_path;
			z_int32		m_row;
			ck_date_t	m_acquistionDate;
			ck_date_t	m_processingDate;
			z_int32		m_collectionNumbrer;
			ckLandsatTX m_tx;

		};
	}
}
